package com.easyidea.its.domain.service.base;

import java.io.Serializable;

import com.easyidea.its.domain.repository.base.BaseBeanRepository;

/**
 * 
 * @author hukn
 * 
 * @param <T>
 * @param <R>
 */
public interface BaseBeanService<T, R extends BaseBeanRepository<T>> {

	/**
	 * 根据key值获取相应的持久化对象
	 * 
	 * @param <E>
	 * @param claz
	 *            要查询的对象class
	 * @param id
	 * @return
	 */
	T getBeanById(Serializable id);

	/**
	 * 指定id的bean对象是否存在
	 * 
	 * @param <E>
	 * @param clazz
	 * @param id
	 * @return
	 */
	boolean existsBean(Serializable id);

	/**
	 * 判断指定类的指定属性的唯一性。
	 * 
	 * @param propertyName
	 * @param propertyValue
	 * @param idpropertyName
	 * @param idValue
	 * @return
	 */
	boolean isRepeated(String propertyName, String propertyValue, String idpropertyName, Serializable idValue);

	/**
	 * 持久化对象
	 * 
	 * @param <E>
	 * @param bean
	 */
	void saveOrUpdateBean(T bean);


	/**
	 * 物理删除对象
	 * 
	 * @param id
	 */
	void removeBean(Serializable id);

}
